<?php

namespace Model;

class FriendHandler{
			
	private $m_db = NULL;
        
    public function __construct(Database $db) {
            $this->m_db =$db;
    }
	
	//Tar reda på om en användare finns
	public function SearchForUser($username){
				
		$sql = "SELECT m_username FROM user WHERE m_username=?";
  			
		$stmt = $this->m_db->Prepare($sql);
		
        $stmt -> bind_param("s", $username);
		
		$stmt -> execute();
		
		if ($stmt->bind_result($username) == FALSE) {
                throw new \Exception($this->mysqli->error);
        }
				
		while ($stmt->fetch()) {
			return true;
			$stmt -> close();
        }
         
        return false;
        $stmt -> close();
	}
	
	//Lägger till en vän
	public function AddFriend($userId, $username){
		
		$sql = "INSERT INTO friend(m_userId, m_username) VALUES (?,?)";
		
		$stmt = $this->m_db->Prepare($sql);
		
		$stmt->bind_param("is", $userId, $username);
		
		$insertId = $this->m_db->RunInsertQuery($stmt);
		
		return true; 
	}
	
	//Tar redan på om man redan är vän med den man försöker lägga till
	public function FriendExist($username, $userId){
			
		$sql = "SELECT m_username FROM friend WHERE m_username=? AND m_userId=?";
	  			
		$stmt = $this->m_db->Prepare($sql);
		
        $stmt -> bind_param("si",$username, $userId);
		
		$stmt -> execute();
            
		if ($stmt->bind_result($username) == FALSE) {
                throw new \Exception($this->mysqli->error);
        }
				
		while ($stmt->fetch()) {
			return false;
			$stmt -> close();
        }
         
        return true;
        $stmt -> close();
			
	}
	
	public static function Test(Database $db){
		
		$sut = new FriendHandler($db);	
		
	//Test för SearchForUser
		//Sök på användare som finns		
		if($sut->SearchForUser("stina")==true){
			return true;
		} 
		//Sök på användare som inte finns
		if($sut->SearchForUser("evalisa")==false){
			return true;
		} else {
			echo "Fel på SearchForUser";
			return false;
		}
		
	//Test för AddFriend
		if($sut->AddFriend(74, "elsvi")){
			return true;
		} else {
			echo "Fel på AddFriend";
			return false;
		}
		
	//Test för FriendExist
		//Test med ej vän
		if($sut->FriendExist("stina", 77)==true){
			echo "Fel på FriendExist";	
			return false;
		} 
		//Test med vän
		if ($sut->FriendExist("Klara", 74)==false){
			return true;
		} else {
			echo "Fel på FriendExist";	
			return false;
		}
		
		return true;
	}
}